package club.sinoexcel.service;


import club.sinoexcel.cxf.domain.User;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.List;

@Path("/user")//该注解在类上，将请求中的对应路径映射到类/接口
public interface IUserService {

    @Path("/userAdd")//该注解放到方法上，将请求中的对应路径映射到方法上
    @POST//使用post方法发送请求
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//接收数据类型配置
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//设置返回值数据类型
    public void save(User user);//新增

    @Path("/userDel/{id}")//该注解放到方法上，将请求中的对应路径映射到方法上
    @DELETE//使用DELETE方法发送请求
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//接收数据类型配置
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//设置返回值数据类型
    public void deleteById(@PathParam("id") Integer id);//删除

    @Path("/userUpdate")//该注解放到方法上，将请求中的对应路径映射到方法上
    @PUT//使用put方法发送请求
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//接收数据类型配置
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//设置返回值数据类型
    public void update(User user);//更新

    @Path("/userId/{id}")//该注解放到方法上，将请求中的对应路径映射到方法上
    @GET//使用get方法发送请求
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//接收数据类型配置
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//设置返回值数据类型
    public User findById(@PathParam("id") Integer id);//根据主键查询

    @Path("/user")//该注解放到方法上，将请求中的对应路径映射到方法上
    @GET//使用get方法发送请求
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//接收数据类型配置
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//设置返回值数据类型
    public String findAll();//查询所有

    @Path("/userlist")//该注解放到方法上，将请求中的对应路径映射到方法上
    @GET//使用get方法发送请求
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//接收数据类型配置
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})//设置返回值数据类型
    public List<User> findList();//查询所有
}
